
//845.数组中的最长山脉
class Solution {
public:
    int longestMountain(vector<int>& arr) {
        //分别求单调递增和递减区间
        int ret=0,n=arr.size();
        int i=0;
        while(i<n-1)
        {
            int start=i,flag1=0,flag2=0;  //用flag来记录是否存在左右山脉
            while(i<n-1&&arr[i]<arr[i+1])  //记录山脉左侧
            {
                flag1=1;
                i++;
            }
            while(i<n-1&&arr[i]>arr[i+1])  //记录山脉右侧
            {
                flag2=1;
                i++;
            }
            if(flag1&&flag2)
            ret=max(ret,i-start+1);
            if(i<n-1&&arr[i]==arr[i+1]) i++;  //对于后面数据相等时，向后移动防止死循环
        }
        return ret;
    }
};